/**
 * 示例: 使用异步接口进行查询
 */

import { findAsync } from '../src/index';

// 示例数据
const users = [
  { name: 'Alice', age: 30, city: 'New York' },
  { name: 'Bob', age: 25, city: 'Los Angeles' },
  { name: 'Charlie', age: 35, city: 'New York' },
  { name: 'David', age: 20, city: 'Chicago' },
  { name: 'Eve', age: 28, city: 'New York' }
];

async function example() {
  console.log('=== 异步查询示例 ===');
  
  // 使用异步查询查找年龄大于25的用户
  const cursor = findAsync(users, { age: { $gt: 25 } });
  
  console.log('年龄大于25的用户:');
  for await (const user of cursor) {
    console.log(`- ${user.name}, ${user.age}岁`);
  }
  
  // 使用异步查询查找纽约的用户并限制结果数量
  const nyCursor = findAsync(users, { city: 'New York' })
    .limit(2);
  
  console.log('\n纽约的前2个用户:');
  const nyUsers = await nyCursor.all();
  nyUsers.forEach(user => {
    console.log(`- ${user.name}, ${user.age}岁`);
  });
  
  // 使用异步查询并排序
  const sortedCursor = findAsync(users, { age: { $gte: 20 } })
    .sort({ age: -1 }) // 按年龄降序排列
    .limit(3); // 只取前3个
  
  console.log('\n年龄最大的前3个用户:');
  const sortedUsers = await sortedCursor.all();
  sortedUsers.forEach(user => {
    console.log(`- ${user.name}, ${user.age}岁`);
  });
}

// 运行示例
example().catch(console.error);